package cn.wolfcode.trip.base.service;


import cn.wolfcode.trip.base.domain.Travel;
import cn.wolfcode.trip.base.domain.TravelContent;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.query.StrategyTravelQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface ITravelService {
    /**
     * 根据作者id查询游记列表
     * @param qo
     * @return
     */
    PageInfo<?> queryForList(QueryObject qo);

    /**
     * 根据游记的id查询游记信息
     * @param id 游记id
     * @return
     */
    Travel queryByTravelId(Long id);

    void save(Travel travel);

    void update(Travel travel);

    /**
     * 根据游记id查询内容
     * @param id
     * @return
     */
    TravelContent getContentById(Long id);

    /**
     * 修改状态
     * @param travel
     * @return
     */
    void changeState(Travel travel);


    /**
     * 查询当前游记点赞数量
     * @param travelId
     * @return
     */
    Integer queryForLikeCount(Long travelId);

    /**
     * 更新当前游记的点赞数
     * @param likeCount
     * @param travelId
     */
    void updateLikeCount(Integer likeCount,Long travelId);

    List<Travel> listTravelByStategyIdForApp(Long strategyId);

    PageInfo listTravelCommentByStategyId(StrategyTravelQueryObject qo);
    void insertRelation(Long strategyId, Long travelId);
    void deleteRelation(Long strategyId, Long travelId);
    List<Travel> selectRelease();

    /**
     * 根据作者id查询游记的数量
     * @param authorId 作者id
     * @return
     */
    int queryForCount(Long authorId);

    /**
     * 查询收藏次数
     * @param travelId
     * @return
     */
    Integer queryCollectCount(Long travelId);

    void updateCollectCount(int collectCount, Long travelId);

    void updateCommentCount(int commentCount, Long travelId);

    PageInfo<?> queryForSearchList(QueryObject qo);
}
